package com.fbw.sys.service.impl;

import com.fbw.sys.domain.Menu;
import com.fbw.sys.mapper.MenuMapper;
import com.fbw.sys.service.MenuService;
import com.fbw.sys.uitls.DataGridView;
import com.fbw.sys.vo.MenuVo;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class MenuServiceImpl implements MenuService {

    @Autowired
    private MenuMapper menuMapper;

    @Override
    public List<Menu> queryAllMenuForList(MenuVo menuVo) {
        return menuMapper.queryAllMenu(menuVo);
    }

    @Override
    public List<Menu> queryMenuByUserIdForList(MenuVo menuVo, int userId) {
        //暂时使用全查询，之后添加权限管理
        //估计不同角色查询不同菜单


        /*
        他使用uid去控制菜单，那type属性有什么用
         */
        return menuMapper.queryMenuByUid(menuVo.getAvailable(),userId);
    }

    @Override
    public DataGridView queryAllMenu(MenuVo menuVo) {
        Page<Object> page= PageHelper.startPage(menuVo.getPage(), menuVo.getLimit());
        //页面助手自动注入，下面查询就是按照上面页面限制内容查询
        List<Menu> data = this.menuMapper.queryAllMenu(menuVo);
        return new DataGridView(page.getTotal(), data);//返回属性，总页面数和当前页面信息
    }

    @Override
    public void addMenu(MenuVo menuVo) {
        this.menuMapper.insertSelective(menuVo);
    }

    @Override
    public void updateMenu(MenuVo menuVo) {
        this.menuMapper.updateByPrimaryKeySelective(menuVo);
    }

    @Override
    public int queryMenuByPid(int pid) {
        return this.menuMapper.queryMenuByPid(pid);
    }

    //删除操作就要注意表关联之间的关系
    @Override
    public void deleteMenu(MenuVo menuVo) {

        //删除菜单表的数据
        this.menuMapper.deleteByPrimaryKey(menuVo.getId());

        //根据菜单id删除sys_role_menu里面的数据
        this.menuMapper.deleteRoleMenuByMid(menuVo.getId());
    }
}
